////本项目为数字系统设计与Verilog HDL第六章变成习题。
//6.4题，设计一个8位计数器，每次在时钟的上升沿。计数器加1，当计数器溢出时，自动重新从0开始技术部，计数器有同步复位。
//制作者:FPGA 研究者
//时间：2022年5月26日

//方法一：普通写法
/*
module count8(clk,rst_n,count);
    input clk,rst_n;
	 output [7:0]count;
	 reg [7:0] temp;
	always@(posedge clk) begin
	  if(!rst_n) begin
	   temp<=0;
		end
	  else if(temp==8'b1111_1111) temp<=8'b0000_0000;
	  else temp<=temp+1;
	 end
 assign count=temp;
endmodule
*/
//方法二；利用函数
module count8(clk,rst_n,count);
    input clk,rst_n;
	 output reg [7:0]count;
	 reg [7:0] temp;
	 
	 function count1;
	 input [7:0]a;
	 reg [7:0] count;
	 begin
	// always@(a) 
	begin 
	   if(a==8'b1111_1111) 
		 count=0;
		else 
		 count=a+1;//这里加了两次
		end
	 count1=count;
	end
	endfunction
	 
	always@(posedge clk) begin
	  if(!rst_n) begin
	   count<=0;
		end
	  else 
	  begin temp<=temp+1;
	        count <=count1(temp);
	 end
	end
 //assign count=temp;
endmodule

	  